草庐IT

javascript oop、instanceof 和基类

全部标签

c# - 您如何使用反射获取类及其基类(在层次结构中向上)的所有属性? (C#)

所以我现在拥有的是这样的:PropertyInfo[]info=obj.GetType().GetProperties(BindingFlags.Public);其中obj是某个对象。问题是我想要的一些属性不在obj.GetType()中,它们在更上一层的基类之一中。如果我停止调试器并查看obj,我必须挖掘一些“基本”条目以查看我想要获取的属性。是否有一些我可以设置的绑定(bind)标志让它返回那些,或者我是否必须递归地挖掘Type.BaseType层次结构并对所有这些进行GetProperties? 最佳答案 使用这个:Prope

c# - 试图继承三个基类而不能

我有几个关于我的User类设计的问题,但是他们足够不同,我认为他们应该是独立的问题。所以,首先是与基类的继承有关。我目前继承两个类,ProfileBase和ISessionMgrEntry,如下所示:publicclassUser:ProfileBase,ISessionMgrEntry但是,我还想继承第三个类,MembershipUser,像这样:publicclassUser:ProfileBase,MembershipUser,ISessionMgrEntry但是,编译器不允许我这样做。为什么?而且,我怎么得到围绕这个?谢谢。PS-ASP.NET3.5/C#编辑嗨。我认为以下解决

c# - 泛型和转换 - 不能将继承的类转换为基类

我知道这是旧的,但我仍然不太了解这些问题。谁能告诉我为什么以下内容不起作用(抛出关于转换的runtime异常)?publicabstractclassEntityBase{}publicclassMyEntity:EntityBase{}publicabstractclassRepositoryBasewhereT:EntityBase{}publicclassMyEntityRepository:RepositoryBase{}现在是类型转换线:MyEntityRepositorymyEntityRepo=GetMyEntityRepo();//whateverRepositoryB

c# - 为什么在派生类中不能像在 C# 中的基类中那样使用事件?

在下面的代码中,我想通过派生/子类化来扩展类的行为,并利用基类的事件:publicclassA{publiceventEventHandlerSomeEvent;publicvoidsomeMethod(){if(SomeEvent!=null)SomeEvent(this,someArgs);}}publicclassB:A{publicvoidsomeOtherMethod(){if(SomeEvent!=null)SomeEvent(this,someArgs);//为什么不可能?对于这种情况,常见的解决方案是什么? 最佳答案

c# - 如何在基类上调用显式实现的接口(interface)方法

我有这样一种情况,两个类(一个派生自另一个)都显式实现了相同的接口(interface):interfaceI{intM();}classA:I{intI.M(){return1;}}classB:A,I{intI.M(){return2;}}从派生类的I.M()实现中,我想调用基类的实现,但我不知道该怎么做。到目前为止我尝试的是这个(在B类中):intI.M(){return(baseasI).M()+2;}//thisgivesacompile-timeerror//errorCS0175:Useofkeyword'base'isnotvalidinthiscontextintI.

c# - 如何调用像 base.base.GetHashCode() 这样的二级基类方法

classA{publicoverrideintGetHashCode(){return1;}}classB:A{publicoverrideintGetHashCode(){return((object)this).GetHashCode();}}newB().GetHashCode()这会溢出堆栈。如何从B.GetHashCode()调用Object.GetHashCode()?编辑:B现在继承自A。 最佳答案 (编辑-误读问题)如果想获取原始的object.GetHashCode()版本;你不能-至少不能,除非A通过类似的方式

c# - 如何在新实现的接口(interface)或基类之间做出决定?

当谈到实现时,我应该如何决定使用基类型还是接口(interface)?我试图解决几个例子,但我没有得到完整的想法:(关于如何以及为什么的例子将不胜感激.. 最佳答案 基类,无论是否抽象,都可以包含已实现的成员。接口(interface)不能。如果您的所有实现都将以相似的方式执行,那么基类可能是可行的方法,因为您的所有子类都可以共享基类成员的相同实现。如果他们不打算共享实现,那么接口(interface)可能是可行的方法。例子:classPerson{stringName{get;set;}}classEmployee:Person{

c# - 确保调用基类的静态构造函数的最佳方法是什么?

documentationonstaticconstructorsinC#说:Astaticconstructorisusedtoinitializeanystaticdata,ortoperformaparticularactionthatneedsperformedonceonly.Itiscalledautomaticallybeforethefirstinstanceiscreatedoranystaticmembersarereferenced.最后一部分(关于它何时被自动调用)让我陷入了循环;在阅读那部分之前,我认为通过以任何方式简单地访问一个类,我可以确定它的基类的静态构

c# - 代码分析 CA1063 在从 IDisposable 派生并在基类中提供实现时触发

我有一些代码会触发代码分析警告CA1063:CA1063:Microsoft.Design:RemoveIDisposablefromthelistofinterfacesimplementedby'Functionality'andoverridethebaseclassDisposeimplementationinstead.但是,我不确定我需要做什么来修复这个警告。简而言之,我有一个派生自IDisposable的接口(interface)IFunctionality。类Functionality实现了IFunctionality但派生自类Reusable以便能够重用som代码。R

c# - WinForm UserControl 的通用基类

我为WinFormUserControl创建了一个通用基类:publicpartialclassBaseUserControl:UserControl{publicvirtualvoidMyMethod(){//somebasestuffhere}}以及基于此的UserControl:publicpartialclassMyControl:BaseUserControl{publicoverridevoidMyMethod(){//somespecificstuffherebase.MyMethod();}}它工作正常,但无法在VisualStudio设计器中编辑MyControl,因